package com.solo.system.api.entity;

import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import com.solo.common.core.base.entity.BasicEntity;
import com.solo.system.api.consts.notice.NoticeLevel;
import com.solo.system.api.consts.notice.NoticeScope;
import com.solo.system.api.consts.notice.NoticeStatus;
import com.solo.system.api.consts.notice.NoticeType;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 通知公告实体类
 * @author 十一
 * @since 2024-12-02 17:27
 * 人生若只如初见，何事秋风悲画扇
 **/
@Data
@EqualsAndHashCode(callSuper = true)
@Table("sys_notice")
public class SysNotice extends BasicEntity {

    /**
     * id
     */
    @Id(keyType = KeyType.Auto)
    private Long noticeId;

    /**
     * 级别[1普通 2一般 3紧急]
     */
    private NoticeLevel level;

    /**
     * 类型[1通知公告 2新闻 3会议]
     */
    private NoticeType type;

    /**
     * 标题
     */
    private String title;

    /**
     * 内容
     */
    private String content;

    /**
     * 状态[1草稿 2发布 3撤销]
     */
    private NoticeStatus status;

    /**
     * 通知范围[1全部用户 2指定用户]
     */
    private NoticeScope scope;

    /**
     * 发送人
     */
    private String sendBy;

    /**
     * 发送时间
     */
    // TODO 考虑后期增加定时发布
    private LocalDateTime sendTime;

    /**
     * 撤销人
     */
    private String revokeBy;

    /**
     * 撤销时间
     */
    private LocalDateTime revokeTime;

}
